{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n",
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from functools import partial\n",
    "\n",
    "import keras\n",
    "from keras.optimizers import SGD, RMSprop\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from keras import backend as K\n",
    "from keras.callbacks import EarlyStopping, ReduceLROnPlateau\n",
    "from keras.layers import Dense, LSTM, Bidirectional, Lambda, Input, TimeDistributed\n",
    "from keras.layers.embeddings import Embedding\n",
    "from keras.models import Sequential, Model\n",
    "from keras.utils import plot_model\n",
    "from sklearn.metrics import precision_score\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_precision_score(labels, predictions):\n",
    "    score = 0\n",
    "    for i in range(0, len(labels)):\n",
    "        if labels[i] in predictions[i]:\n",
    "            score += 1\n",
    "    return score / predictions.size\n",
    "def get_recall_score(labels, predictions):\n",
    "    score = 0\n",
    "    for i in range(0, len(labels)):\n",
    "        if labels[i] in predictions[i]:\n",
    "            score += 1\n",
    "    return score / len(labels)\n",
    "def create_dataset(dataset):\n",
    "    dataX, dataY = [], []\n",
    "    for line in dataset.itertuples():\n",
    "        lineindex = line[0]\n",
    "        thislist = dataset.loc[lineindex].values\n",
    "        a = thislist[:-1]\n",
    "        b = thislist[-1]\n",
    "        dataX.append(a)\n",
    "        dataY.append(b)\n",
    "    return np.array(dataX), np.array(dataY)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def def_model(w2vDimension, n_symbols, input_length):\n",
    "    model = Sequential()\n",
    "    model.add(Embedding(output_dim=w2vDimension, input_dim=n_symbols, mask_zero=False, input_length=input_length, trainable=False))\n",
    "    model.add(Bidirectional(LSTM(hidden_dim_1, return_sequences=True)))\n",
    "    model.add(TimeDistributed(Dense(hidden_dim_2, activation=\"tanh\")))\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "80000 20000\n"
     ]
    }
   ],
   "source": [
    "dataframe = pd.read_csv('./datas/100thousand@6.csv', engine='python', sep='|', header=None)\n",
    "input_length = dataframe.shape[1] - 1\n",
    "nb_classes = dataframe.values.max() + 1\n",
    "train, validation = train_test_split(dataframe, test_size=0.2, random_state=14)\n",
    "print(len(train), len(validation))\n",
    "\n",
    "X_train, Y_train = create_dataset(train)\n",
    "X_valid, Y_valid = create_dataset(validation)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "import gc\n",
    "del train, validation\n",
    "gc.collect();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "embedding_Dimension = 100\n",
    "hidden_dim_1 = 200\n",
    "hidden_dim_2 = 100\n",
    "NUM_CLASSES = nb_classes\n",
    "\n",
    "\n",
    "base_network = def_model(embedding_Dimension, nb_classes, input_length)\n",
    "input_a = Input(shape=(input_length,))\n",
    "processed_a = base_network(input_a)\n",
    "pool_rnn = Lambda(lambda x: K.max(x, axis=1), output_shape=(hidden_dim_2,))(processed_a)\n",
    "output = Dense(NUM_CLASSES, input_dim=hidden_dim_2, activation='softmax')(pool_rnn)\n",
    "rcnn_model = Model(inputs=input_a, outputs=output)\n",
    "epochs = 100\n",
    "lrate = 0.01\n",
    "decay = lrate / epochs\n",
    "sgd = SGD(lr=lrate, momentum=0.9, decay=decay, nesterov=False)\n",
    "top20_acc = partial(keras.metrics.sparse_top_k_categorical_accuracy, k=20)\n",
    "top20_acc.__name__ = 'acc'\n",
    "rcnn_model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd, metrics=[top20_acc])\n",
    "callbacks = [EarlyStopping(monitor='val_loss', patience=3, verbose=1)]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         (None, 5)                 0         \n",
      "_________________________________________________________________\n",
      "sequential_1 (Sequential)    (None, 5, 100)            5210800   \n",
      "_________________________________________________________________\n",
      "lambda_1 (Lambda)            (None, 100)               0         \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 46891)             4735991   \n",
      "=================================================================\n",
      "Total params: 9,946,791\n",
      "Trainable params: 5,257,691\n",
      "Non-trainable params: 4,689,100\n",
      "_________________________________________________________________\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "print(rcnn_model.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:Variable *= will be deprecated. Use variable.assign_mul if you want assignment to the variable value or 'x = x * y' if you want a new python Tensor object.\n",
      "Train on 80000 samples, validate on 20000 samples\n",
      "Epoch 1/100\n",
      " - 135s - loss: 9.2825 - acc: 0.3543 - val_loss: 7.5259 - val_acc: 0.3579\n",
      "Epoch 2/100\n"
     ]
    }
   ],
   "source": [
    "history = rcnn_model.fit(X_train, Y_train, batch_size=128, epochs=epochs, verbose=2, validation_data=(X_valid, Y_valid), callbacks=callbacks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#**************************--output--****************************************\n",
    "# Plot the loss and accuracy curves for training and validation\n",
    "fig, ax = plt.subplots(2,1)\n",
    "ax[0].plot(history.history['loss'], color='b', label=\"Training loss\")\n",
    "ax[0].plot(history.history['val_loss'], color='r', label=\"Validation loss\",axes =ax[0])\n",
    "legend = ax[0].legend(loc='best', shadow=True)\n",
    "\n",
    "ax[1].plot(history.history['acc'], color='b', label=\"Training accuracy\")\n",
    "ax[1].plot(history.history['val_acc'], color='r',label=\"Validation accuracy\")\n",
    "legend = ax[1].legend(loc='best', shadow=True)\n",
    "plt.show()\n",
    "#*****************************************************************************"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dict_keys(['val_loss', 'val_acc', 'loss', 'acc'])\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl8VOX1+PHPyU5CgISwh01EZN/C\norhgVRYXXIoKFRW7UHdtq9Xuan9Wv35bv7auRcVqBSnForbiVkXFBSTsq2yyhDUZwpKEZLKc3x/3\nJgwhyQxhJjPJnPfrxYvMXc/NwJx5nuc+54qqYowxxtQlJtwBGGOMiXyWLIwxxvhlycIYY4xfliyM\nMcb4ZcnCGGOMX5YsjDHG+GXJwhhjjF+WLIwxxvhlycIYY4xfceEOIFgyMjK0W7du4Q7DGGMalaVL\nl+apaht/2zWZZNGtWzeys7PDHYYxxjQqIrI9kO2sG8oYY4xfliyMMcb4ZcnCGGOMX5YsjDHG+GXJ\nwhhjjF+WLIwxxvhlycIYY4xfTWaehTFBpwqr/wl5mwLfp+MgOPPS0MXUVH37GcQmQpcR4Y7E1MKS\nhTE1qaiAd38OS15wF0gAO7nPs7/gV3DefSCB7GP4+gWYfx8ktYS7V0CztHBHZGoQ0mQhIuOAPwOx\nwIuq+li19bcAtwPlQAEwTVXXicj1wH0+mw4AhqjqilDGawwAZSUw7xZY+y84+y64+OHAPvjLS+Ht\nO2HBI1CwH8Y/DjHW01srVfjkMfj0Meg6CrZ/CQv/BGP+X7gjMzUI2b9kEYkFngHGA32AySLSp9pm\ns1S1v6oOAh4HngBQ1ZmqOshdfgOwzRKFaRAlR2DWtU6iuPj3MOb3gbcQYuPhimfh7DudFskbP3AS\njzlRRTm881MnUQyaAje+DQMnw+K/Qn5A1SdMAwvl157hwGZV3aqqXmA2cIXvBqp62OdlClXt+ONM\nBl4PWZTGVCrMg1cuh28XwpXPw6i7Tv4YMTHON+OLH3YSzqxrnQRkjikrgbk3Q/YMGHUPXPE0xMbB\nd34FEgMfW8siEoUyWXQCdvq8znGXHUdEbheRLTgti5r+d15HLclCRKaJSLaIZOfm5gYhZBO18rfD\nS2Ng/waY/DoMmnxqxxt1N1z5nJN4XrncSUQGig/Da9+FdW/B2D/AxQ8da7m1zISRt8LqObDbOhIi\nTSiTRU1t9xNaDqr6jKr2AO4Hfn3cAURGAEWquqamE6jqdFXNUtWsNm38Vtg1pmb71jqJosgDN74F\nZ4wNznEHfQ8mzXIS0EtjrHulYD/87VLY8RVcNR3Ouv3Ebc75CTRLhw9/44xpmIgRymSRA3T2eZ0J\n7K5j+9nAldWWTcK6oEwobf8KXh7vdH98/73g37rZa5yTgIrynISxb21wj99YHPjWuX7PZpg8GwZe\nV/N2SS3h/PudW2k3/7dhYzR1CmWyWAL0FJHuIpKA88H/tu8GItLT5+WlwCafdTHANThJxJjg2zAf\n/n4lpLSFH3wAbXuH5jxdRsDN7zndLS+PdxJUNNm7GmaMheKDzkB2z4vr3j7r+5DWHT78rTMQbiJC\nyJKFqpYBdwDvA+uBOaq6VkQeFpEJ7mZ3iMhaEVkB/BS4yecQ5wE5qro1VDGaKLb8NfjHFGjXF77/\nPrTq7H+fU9Guj5OQUto6CWrD/NCeL1Js+xxevgRi4pzfc+dh/veJS4CLfgf718GKWaGP0QREtIn0\nC2ZlZWm9npRXcsT55mNCT2Kh42DnwyCYyrywezlogN9Cv/0MPnkUelwI174Kic2DG09dCj0wcyLs\nWQljH4EOA0Nznnb9IKlFcI9ZUQF7VkBZcWDbezbDO/dCWje44V/OAHagVOGli+FQDty5FBJS6hUy\nqnBoJ7TqUr/963L0oJPQIkFya2jTq167ishSVc3yt53N4M7b6HQNmIbReSR8b3bwZukWHYDXJ8HO\nxSe3X7+Jzt1KwU5c/qS0hpv+DXNugPceCN15WnWFG+ZB6x7BOV55Kbx1O6z6x8ntlzkMvjcHktNP\nbj8RZ57Ly+Ng0bPOjPiTVVEBH/zK2f+7L0H/iSd/jLr8cypsXRDcY9ZX36vhmpdDegprWRQfht3L\ngh+QOZFnM7z7AGT0hClvQIuOp3a8Q7uc2zAPbIFxjwX+wRifDJ2ywju7urwUcpZAuTf4xz6aD+/8\nDBDn99xx0Kkdz1sIc250BpzPuw+6nRPYfhLrJIv4pPqfe/b1sPVTuGs5ND+JOx7LvE5yWz3Heb/T\nusOtXwSvBMvuFTD9fBh5W/DunjsVKW2drs56CLRlYcnCNKytnzgfAM3Sna6JjJ5+d6lR7kZ47Wqn\nK2DSTDjt/KCG2ejlbYK/X+0kjlP5/RQdgJnXOF+oLvs/GDo1qGH6lbcJnhnhDHpf+sfA9vEWwj9u\ngC0fwYW/hebt4a3bnMR5+kXBiWvuD2Dj+/DTtc4dXI1YoMnCCteYhnXaaJj6Hygtcu6Q2VWPVl3O\nUmffsmLnWJYoTpTRE37gDtzPnAhr3zz5YxzKgRnjnDG9a19t+EQBznUMnQpLX4a8zf63LzoAr0xw\nuocu/wuc+zPofw2kdoAv/hKcmA7ugLXzYOhNjT5RnAxLFqbhdRzs3BmUkOLMbt5yEv2+mz9y9klM\nde6uOdUulqasRUe4eT50HOL0ry95MfB9c79x5kUc2eO0AHtfHrIw/Rr9AMQlwUcP1r3dwZ3Ol4i9\nq+Havzsf5uCMS424Bb79NDgzw7961unOGnnrqR+rEbFkYcKjdQ/4/gfOQOzMa2DNG/73WT3XqbWU\nfpqTbII1eNuUNUtzBrrPGOuMYyx41P/M6J1LnA/d8lKY+k7gYxSh0rytUz5l/b9hx6Kat9m/wYn5\nyF43uV12/PqsmyEhFb48xdZF0QFY9opzg8TJ3N3VBFiyMOHTooPzzTdzmNMHvHh67dsuet6p4tp5\nBNz8DqS2b7g4G7uEZLhuJgy63qny+s7Pap/stulDeHUCJLVyEnKHAQ0ba23Out0Ze/ighjIgO792\nEkVFmfPvqabkltTSaWmsffPUyq5kv+R0odanyGQjZ8nChFezVs43wV6XwLv3wcePHP9hoAofPQzv\n3Q9nXgZT/hVV/cRBExsHVzzjfEPPfsmp+lq9fPqqOc5tyK1PdxJFevfwxFqThBS44JeQ8zWs9ykE\nsfEDZ4wiOd3plmzfv/ZjjLzV6T5a9Gz9Yigtdr7QnH6RM5kzyliyMOEX38wZQB08BT57HP5zj/PN\nt7wM/n2X80CcITfCNa+c2m2Y0U7EKZ0+5hGn6uvMic6t4wBfPQP/+hF0OcvpemreNryx1mTwFGjT\nG/77oNNFtnK2k9wyejqJwl9ya5npdB8te9XpTjpZq2ZD4X7ngVhRyCblmcgQGwcTnnbuF//8CacC\nrCps+A+cey9859f2mNJgOfsOSMlw5iG8cpnzlLpFz0LvCXD1C5GbkGNinWQ36xpnnGvrAuh+ntPF\nFuhs9bPvdD70s186uYl+FRXw5dPOjPvu59Uv/kbOkoWJHCJOTaDmbY/Nbh7/OIz4cXjjaooGTnJK\nRPzjBqf0SNb34ZI/Oh/IkaznxdDtXCdR9LnCSW5xiYHv376f0420eDqcdWfgiXHju+DZ5MwEj9Iv\nLTYpz0SmTR8CAj2DNInK1Gz3Cqe+0cDJjedD8FCOcwv14Cn1S25bP3UG8S//c+BzR14aC0d2w53L\nnVZwE2K1oUzj5q+MtQmOjoMa31yVlpnH5lDUR/fznO6kL5+GwTf6L/uy82vYuQjG/U+TSxQnwwa4\njTHRRcQZpPZscrqX/Pniz86txIOnhD62CGbJwhgTffpc6ZQt91cCJG8zbHgHhv2wYUvZRyBLFsaY\n6BMbByNvd7qXdn5d+3ZfPQ2xCXaTBZYsjDHRavAUp3vpiz/XvL4g13lS36DJkTnvpIFZsjDGRKfE\n5k730oZ3aq5o+/V053kjZ93Z8LFFIEsWxpjoNeLHTjfTV08dv9xbCEtegDMvhYzTwxNbhLFkYYyJ\nXs3bOhMUV7wOBfuPLV/+mvPgqCgt7VETSxbGmOh29p1Od9PXbtXj8jJnYLvzCOgyIryxRRBLFsaY\n6JbR06l6vORFp/tp/VvO0/CsVXEcSxbGGDPqLqfbaflrztyL1qc7CcRUid6568YYU6nLSKfb6aPf\ng/cIXPak/zIgUcZ+G8YYA063k/cIpLRxCiua41jLwhhjwOl26jnG+TtSn+kRRpYsjDEGnG6n6/8Z\n7igilnVDGWOM8cuShTHGGL8sWRhjjPHLkoUxxhi/LFkYY4zxK6TJQkTGicg3IrJZRB6oYf0tIrJa\nRFaIyOci0sdn3QAR+UpE1rrb2L1sxhgTJiFLFiISCzwDjAf6AJN9k4Frlqr2V9VBwOPAE+6+ccBr\nwC2q2hcYDZSGKlZjjDF1C2XLYjiwWVW3qqoXmA1c4buBqh72eZkCqPvzGGCVqq50t/OoankIYzXG\nGFOHUCaLTsBOn9c57rLjiMjtIrIFp2VRWebxDEBF5H0RWSYiP6/pBCIyTUSyRSQ7Nzc3yOEbY4yp\nFMpkITUs0xMWqD6jqj2A+4Ffu4vjgHOA692/rxKRC2vYd7qqZqlqVps2bYIXuTHGmOOEMlnkAJ19\nXmcCu+vYfjZwpc++n6pqnqoWAfOBISGJ0hhjjF+hTBZLgJ4i0l1EEoBJwNu+G4hIT5+XlwKb3J/f\nBwaISLI72H0+sC6EsRpjjKlDyAoJqmqZiNyB88EfC8xQ1bUi8jCQrapvA3eIyEU4dzrlAze5++aL\nyBM4CUeB+ar6TqhiNcYYUzdRPWEYoVHKysrS7OzscIdhjDGNiogsVdUsf9vZDG5jjDF+WbIwxhjj\nlyULY4wxflmyMMYY45clC2OMMX5ZsjDGGOOXJQtjjDF+WbIwxhjjlyULY4wxfvlNFiKyWER+LCIt\nGiIgY4wxkSeQlsVNwGnAChF5raZS4cYYY5o2v8lCVTeo6v1AT+AN4FUR+VZEfiMirUIeoTHGmLAL\naMzCfXb2Y8CjwFvAFMALfBy60IwxxkQKvyXKRWQxcBSYAfxWVY+6q74QkVGhDM4YY0xkCOR5Fjeo\n6saaVqjqhCDHE/G25RWy40BRuMNolBQoLi2nyFtGkbecopJy529vGYU+ywq9ZRz1ljOkaxr3julF\nQpzdtNcYbd5fQJvURFo2iw93KCYIAkoWIvInVT0IICJpwD2q+rvQhhaZJj7/FXkFJeEOo0lJjIsh\nJTGO5IRY908ccTHC9M+2smLHQZ6bMoTWzRPDHaYJ0Ia9h3ns3Q188k0uzeJjmTCwI1NGdqV/Zsug\nHP/Q0VK25BaQnpxAm9REUhJD9gy3Oh0o9FLkLSMzLTks529ogfyWL1PV31S+cJ9idzkQdcmipKyc\nvIISvjeiC98d0inc4TRKiXGxJySG2Bipcdu3Vuzi53NXMeHpL3jhxiz6dLS7twOx/3Ax+UWltElN\npFWzeGJq+f0G255DR3nig43MXZZDamIc943txc4DRby1Yjf/yN7JwMyWXD+yK5cP6EizhNiTOvb+\nI8V8uG4f763Zy1dbPJRVHHtoW7P4WDJSE2jTPJGM5olkpCY6P6cm0qZ5Au1aJNG/U0viYoPTQt2S\nW8CLC7fyxrJdeMsqGNS5FVcP6cTlAzqSlpJwSsfed7iYD9buZdHWAwzu0oprhnamZXJktMz8PilP\nRFYBWarqdV8n4TwWtV8DxBewhnhS3p5DRznr0Y959Or+TB7eJaTnMo5VOQeZ9upSDh0t5YlrBzK+\nf4dwhxSx8gu9PPXxZv6+aBul5c7/69gYoXVKAhnNE2mTWvlh6nywVr7ukp5M5/T6fzs+XFzK859s\n4aXPv0UVpo7qxm2je9AqOaFq/b+W5vDa4h1s3l9Ai6Q4Jg7tzPUju9CjTfNaj7vzQBHvr93Le2v2\nsnRHPqrQrXUyY/u1J6trOoeOlpJXUELekRLyCkrILSgh74iXvIISDhR58f1oy2ieyISBHbl6SCf6\ndmyByMklUFUle3s+f/10K/9dv4+EuBgmDs2ka3oy85bvYsPeI8THCqN7teXqwZ34Tu+2JMYFlhC3\newp5b81e3l+7l2U7DrrxJpBX4CUxLobL3ZbZwMyWJx13IAJ9Ul4gyeKXwFicAW4FfgC8p6qPBiPQ\nYGmIZLFm1yEue+pzpt8wlDF924f0XOaY/YeL+fFrS1m+4yD3XNSTu77TM6TflisqlI37j7B0ez6r\ncw4xqHMrrsnqXGsLKNyKS8t5+YttPPvJZgpLyrg2qzOjTs/AU+0DNLfqg9WLt7ziuGN0SU/m3J4Z\nnNuzDWef3poWSf6/zXrLKpi5eDt/+WgT+UWlXDW4Ez+9+IxaE4+qsvjbA7y2aDvvr91Lablydo/W\nTBnZlYv7tCMuRti4r6AqQazbcxiA3h1aMK5ve8b2a0evdqkBfWCWlVdwoNBLbkEJ2/KK+PfK3Xy0\nYR+l5coZ7Zpz1eBMrhzckQ4tm9V5nPIK5YO1e5m+cCvLdxwkLTmeG87qxo1ndSXDp2t0/Z7DzFu+\nizeX72L/kRJaJMVx2cCOXD24E0O7ph0Xs6qyYe+RqgSxYe8RAPp1asHYPu0Z1689p7dtzro9h5m5\neAdvLt9Fkbecfp1aMGVEVyYM6khyQvC63oKWLNyDXQ5cCAjwgaq+c+ohBldDJItPvtnP1JeX8Mat\nZzO0a1pIz2WOV1xazq/mreGNZTmM79eeP14zMGh91QUlZazceZDsbfks3ZHP8h35HCkuAyAlIZZC\nbzn9O7XkoSv6MqRL5Lzv5RXKv5bl8MSHG9lzqJiLerfl/nFn0rNdap37qSqHj5Y5yaOghG/2HmHh\npjy+2pJHobec2BhhUOdWVcljYObxXTiqyjur9/D4e9+w40ARo05vzS/G96Zfp8DHJHKPlDAneyez\nFu9g18GjtElNpHliHN/mFSICQ7ukMbZve8b2bU+X1sEZEzhY5OU/q/Ywb/kulm7PRwTOOq01Vw/J\nZFy/9jT3+fd01FvO3KU7efHzb9nuKaJLejI/Orc7E4d2rrMLrbxC+WJzHvOW7+K9NXs5WlpOl/Rk\nrhzciWHd0vh8Ux7vrd3Ldk8RIjCsazpj+rZjbN/2tSbZI8WlvLl8F68t2sE3+46QmhTHd4dkcv2I\nLn7f60AENVk0Bg2RLN5YmsPP/rmST+8bTdfWKSE9lzmRqvLS59/yh/nrOaNdKi/cmHXS3SeqSk7+\nUZbtyGfp9nyyt+WzYe9hKhREoFe7VIZ0TSOraxpDu6bRJT2Zt1fu5g/z17PvcAkTh2Zy/7gzaZMa\nvgF3VeXTjbk89u4GNuw9wsDMlvzikt6MPK31KR3XW1bB8h35LNyUx8JNuazadQhVSE2KY1SPDM49\nI4P2LZL4y0ebWJlziDPbp/KLS3pzXs+MenePlFcon3yzn9e/3klpeQUX92nHmD7taNsi6ZSuxZ9t\neYXMW76Lect3seNAEUnxMYzt254JAzuyKucQf1+0nQOFXgZ2bsWPzzuNsX3bn3TLsrCkjPfW7GXe\n8l18sSUPVYiPFc7ukcG4fu25qHe7k/p3VNkV9tqi7by7ei/e8gpGdE9nysiujO3bvt53DQazG2oY\n8BTQG0jEaV2UqGpEjTY2RLKY/tkW/jB/A2seGnvctxDTsD7dmMsds5YRHxvD81OGMrx7eq3bessq\nWLv7EEu351f92X/EuZstOSGWwV1aMbRrOkO7pjGoc6tab/MsLCnjqY8389LnW0mKi+Wei8/gxrO6\nEh+kQdNArdl1iEffXc8Xmz10SU/m5+N6cWn/DiHpy84v9PLFljwWbnSSx+5DxQB0aJnEz8b04qrB\nnSK2ay5QqsrS7fn8a/ku/rNyN4fdFuVFvdsx7bzTGNYtLSi/2z2HjrJ+z2GyuqUH1MXnj6eghDnZ\nOcz6ejs7DxzlwjPb8tLUYfU6VjCTxRKcGduzgeHAVKCzqv62XpGFSEMki0fnr+dvX25jw+/HheQ/\npwnc1twCfvhqNjs8RTx8RT++N8K54cBTUMKyHQdZuj2fZdvzWZlzkJIyp38+M60ZQ7umMaSL02o4\ns33qSd8hsyW3gIf/vY5PN+ZyRrvmPDihL2f3yAh4/4oKZdP+ApZuz2dLbkGNtw2nJMbSLN75OznB\nWVfkLefpjzfx5ordpCXHc9eFPbl+RNcGm4OiqmzJLWTz/gJG92pDUvzJ3c3UGJSUlfPlFg+d05I5\nvW3tA++RpKJC+WxTLglxMSf179BXMJPFUlUdKiKrVbW/u+xLVT27XpGFSEMki5/NWcmirR6+eOA7\nIT2PCcyho6Xc9fpyPt2YyzmnZ7D74FG25hUCEBcj9O3Usqo7aWjXNNoFqWtDVfnv+v08/J+17Dxw\nlEsHdOBXl/SmY6sTB0sLK8dD3FbNMp/xkKT4GErLlfKKwLqCE+Ni+ME53blldI+gfDs1BgJPFoH0\npRSKSAKwUkT+AOwBGkfaDTJPYQmtm5/afdQmeFo2i2fG1GH87/vf8O+Vu+ndIZVrsjoztGsaAzJb\nhuzbr4hwcZ92nNszg79+upVnP9nMx+v3c8d3TueyAR1YsfMgy7bnk709n/V7jo2HnNE2lcsGdKxK\nXt3cgVtveQVHveUUesspKnFmshd6y5wZ7qXOMq/bn+/v7h1jQiWQlsVpwG4gCfgZ0BJ4urYSIOHS\nEC2Ly5/6nIzmCbx88/CQnsc0LjsPFPHIO+t5b+3eqmVV4yFd0hjSNY3BXdKs7IWJSEFpWYhILPA7\nVb0JKAZ+U9f2TZ2noIRe7U/9VjXTtHROT+b5G4by1RYPm3MLGNy5Vb3GQ4yJZHUmC1UtF5EOIhKv\nqqUNFVQkUlXyCr3WDWVqdVaP1pzV49RuXzUmUgUyZrEVWCgibwGFlQtV9S8hiyoCFZSU4S2rICPF\nCtoZY6JPIMkiF/gQSHb/RCVPgRfAWhbGmKjkN1n4VpyNZp5CZyKXlco2xkSjQJ6U9yFOAcHjqOqY\nkEQUofIqWxanWILYGGMao0C6oX7t83MS8F0goKf/iMg44M9ALPCiqj5Wbf0twO1AOVAATFPVdSLS\nDVgPfONuukhVbwnknKFS2Q2VYS0LY0wUCqQbanG1RZ+KyKf+9nNvu30GuBjIAZaIyNuqus5ns1mq\n+ry7/QTgCWCcu26Lqg4K4BoahMd9Ol66tSyMMVEokG4o34KBMcBQIJAn0AwHNqvqVvc4s4ErgKpk\noaqHfbZPoYburkjhKfTSIinOngdtjIlKgXRDrcX5EBegDPgW+FEA+3UCdvq8zgFGVN9IRG4Hfgok\nAL5Fl7qLyHLgMPBrVV0YwDlDJq+gxLqgjDFRK5BuqM71PHZNZVlrGih/BnhGRL6HMz5yE079qS6q\n6hGRocCbItK3WksEEZkGTAPo0iW0jzn1FNiEPGNM9PLbpyIit4hIK5/Xae6HtD85gG+iycSpMVWb\n2cCVAKpaoqoe9+elwBbgjOo7qOp0Vc1S1aw2bdoEEFL9eQpLaG0T8owxUSqQDvhbVPVg5QtVzQdu\nDWC/JUBPEenuVq2dBLztu4GI9PR5eSmwyV3exh0gryxk2BNnJnnYeAq8pFvLwhgTpQIZsziuzrOI\nxAB+y2eqapmI3AG87x5jhqquFZGHgWxVfRu4Q0QuAkqBfJwuKIDzgIdFpAznttpbVPVAoBcVbOUV\nSn6Rlwy7E8oYE6UCSRYfisjrwPM4Yw63Av8N5OCqOh+YX23Zb31+vruW/d4A3gjkHA3hYJGXCrXZ\n28aY6BVIsrgPJ0H8BGfQ+gPgr6EMKtJ4Cq0ulDEmugWSLOKBZ1X1aajqhkrAuY02KuS5E/JsgNsY\nE60CGeBegDNhrlIK8HFowolMx0p9WMvCGBOdAkkWzVT1SOUL9+eoKlVeWerDxiyMMdEqkGRRJCID\nK1+IyCCcR6xGDU+hlxiBVvYMZWNMlApkzOInwDwR2e6+7gJMDl1IkSevwEt6SiIxMTVNSjfGmKYv\noKqzItIb6I1zN9RaVfWGPLII4ikosfEKY0xUC6RlAdAdOA3neRa9RQRVnRW6sCKLp9DqQhljolsg\nJcp/DYwBzsSZjT0W+ByInmRRUMKAzFb+NzTGmCYqkAHu64ALgD2qegMwkMBbJE2CVZw1xkS7QJLF\nUVUtB8pEJBXYi9MlFRWKS8s5UlJmz7IwxkS1QFoIy90S5TOAbJyHES0LaVQR5EBlqQ8rImiMiWKB\n3A31Y/fHZ0TkfaCFqkZNsqicvW0T8owx0eykxh5UdXOoAolUeYWVs7etZWGMiV6BjFlEtaq6UFZE\n0BgTxSxZ+HGsLpS1LIwx0SuQeRZDgU44Dz7a7T4TO2p4Cr0kxceQnBDrf2NjjGmiak0WInIh8Byw\nHdjlLs4UkS7Arar6UQPEF3Z5BSW0TklExOpCGWOiV10ti6eAcaq61XehiPQA/oNTK6rJ8xR4rS6U\nMSbq1TVmEY/Tqqhuh7suKngKS0i3ORbGmChXV8viFWCxiLwO7HSXdcYpT/63EMcVMTwFXs5s3yLc\nYRhjTFjVmixU9f+JyNvABJzaUALkAN9X1VUNFF9YqarVhTLGGPzcDeUmhahIDDU5UlKGt7zC5lgY\nY6JerWMWIpIqIr8XkZdF5Jpq654KfWjhd6zUh7UsjDHRra4B7hlAM+Ad4GYR+YeIVA5sjwp5ZBHg\n2IQ8a1kYY6JbXcmip6req6pzVfUSYB3wsYikNVBsYeexirPGGAPUPWaRJCIxqloBoKoPiUgOsBBo\n3iDRhVlVXShrWRhjolxdLYt3gAt9F6jqS8D9OKU/mrzKbiibZ2GMiXZ13Tr7s1qWv4OTSJo8T6GX\nFklxJMRZvUVjTHSzT8E65BWUWBeUMcZgyaJONiHPGGMclizq4Cl0Ks4aY0y085ssRCRRRO4SkTnu\nXIs7RSSgT1ARGSci34jIZhF5oIb1t4jIahFZISKfi0ifauu7iEiBiNwb+CUFj7UsjDHGEUjL4hVg\nKPAC8CIw2F1WJxGJBZ4BxgN9gMnVkwEwS1X7q+og4HHgiWrr/w94N4AYg668QjlQ5LUJecYYQwBP\nygP6qOoAn9cfisjKAPYbDmyufB6GiMwGrsCZ3AeAqh722T4Fn1tyReRKYCtQGMC5gi6/yIsq9iwL\nY4whsJbFChEZVvnCfczqVwG2CK3kAAAS90lEQVTs14ljpc3BqVjbqfpGInK7iGzBaVnc5S5LwZnP\n8VAA5wmJqrpQNmZhjDEBJYshOM+12Cwim4GvgbNFZLmILKtjv5qeQ3rCZD5VfUZVe+Akh1+7ix8C\n/k9VC+oKTESmiUi2iGTn5uYGcCmBO1YXyloWxhgTSDfUFfU8dg7Ow5IqZQK769h+Ns4zvwFGABNF\n5HGgFVAhIsWq+rTvDqo6HZgOkJWVFdRZ5XmFlaU+LFkYY4zfZKGqW0SkH3COu2ihqq4N4NhLgJ4i\n0h3YBUwCvue7gYj0VNVN7stLgU3uOc/12eZBoKB6ogi1qpaFdUMZY0xAt87eAcwBurh/5ojIbf72\nU9Uy4A7gfWA9MEdV14rIwyIywd3sDhFZKyIrgJ8CN9XzOoLOU+AlNkZo2SxqHjdujDG1CqQbahow\nvHL8QET+AHwJPOtvR1WdD8yvtuy3Pj/fHcAxHgwgxqDzFJaQnpJATExNQy/GGBNdAhngFqDU53Up\nNQ9eNyl5BV57joUxxrhqbVmISJzblfR3YJGIvOGuuooAJuU1dp6CErsTyhhjXHW1LL4GUNXHcbqi\nioCjwC2q+scGiC2sPIVeG9w2xhhXXWMWVV1NqroE5+6mqGF1oYwx5pi6kkUbEflpbStVtXodpyaj\nuLScgpIye5aFMca46koWsTjP2m7yg9nVeQorS31Yy8IYY6DuZLFHVR9usEgiyLFSH9ayMMYYqHuA\nO+paFJWqigjamIUxxgB1J4sLGyyKCJPntiwy7G4oY4wB6kgWqnqgIQOJJFVjFtayMMYYwJ7BXaMD\nhV6S4mNITogNdyjGGBMRLFnUIK+ghNYpiYhE7bCNMcYcx5JFDTwFXnuOhTHG+LBkUQNPYYndNmuM\nMT4sWdTAYxVnjTHmOJYsqlFVty6UtSyMMaaSJYtqjpSU4S2vsDELY4zxYcmiGpu9bYwxJ7JkUU1V\nXSibvW2MMVUsWVSTZy0LY4w5gSWLajyFbl0oG+A2xpgqliyqqRyzSEu2loUxxlSyZFGNp6CEFklx\nJMTZr8YYYyrZJ2I1eYVe64IyxphqLFlU4ykoscFtY4ypxpJFNU6pD2tZGGOML0sW1XgKvdayMMaY\naixZ+CgrryC/yOpCGWNMdZYsfOQXlaKK1YUyxphqLFn4qJyQZ2MWxhhzPEsWPqyIoDHG1MyShY+8\ngspSH5YsjDHGV0iThYiME5FvRGSziDxQw/pbRGS1iKwQkc9FpI+7fLi7bIWIrBSRq0IZZ6WqloV1\nQxljzHFClixEJBZ4BhgP9AEmVyYDH7NUtb+qDgIeB55wl68Bstzl44C/ikhcqGKt5CksITZGaNks\nPtSnMsaYRiWULYvhwGZV3aqqXmA2cIXvBqp62OdlCqDu8iJVLXOXJ1UuDzVPgZf0lARiYqQhTmeM\nMY1GKL+tdwJ2+rzOAUZU30hEbgd+CiQA3/FZPgKYAXQFbvBJHiGTV+CldYqNVxhjTHWhbFnU9PX8\nhBaCqj6jqj2A+4Ff+yxfrKp9gWHAL0Qk6YQTiEwTkWwRyc7NzT3lgA8UllgRQWOMqUEoWxY5QGef\n15nA7jq2nw08V32hqq4XkUKgH5Bdbd10YDpAVlbWKXdVeQq9dE5PPtXDGGOCoLS0lJycHIqLi8Md\nSpOQlJREZmYm8fH1G5MNZbJYAvQUke7ALmAS8D3fDUSkp6pucl9eCmxyl3cHdqpqmYh0BXoB20IY\nK2BFBI2JJDk5OaSmptKtWzdEbBzxVKgqHo+HnJwcunfvXq9jhCxZuB/0dwDvA7HADFVdKyIPA9mq\n+jZwh4hcBJQC+cBN7u7nAA+ISClQAdymqnmhihWguLScgpIym5BnTIQoLi62RBEkIkLr1q05le76\nkN6OqqrzgfnVlv3W5+e7a9nv78DfQxlbdZ5CZ46FTcgzJnJYogieU/1d2gxul6fA6kIZY445ePAg\nzz777Envd8kll3Dw4MEQRBRelixcVhfKGOOrtmRRXl5e537z58+nVatWoQorbEI+K7qxOFYXyloW\nxhh44IEH2LJlC4MGDSI+Pp7mzZvToUMHVqxYwbp167jyyivZuXMnxcXF3H333UybNg2Abt26kZ2d\nTUFBAePHj+ecc87hyy+/pFOnTrz11ls0a9YszFdWP5YsXJVjFuk2Kc+YiPPQv9eybvdh/xuehD4d\nW/C7y/vWuv6xxx5jzZo1rFixgk8++YRLL72UNWvWVN1NNGPGDNLT0zl69CjDhg3ju9/9Lq1btz7u\nGJs2beL111/nhRde4Nprr+WNN95gypQpQb2OhmLJwuUpKCEpPobkhNhwh2KMiUDDhw8/7rbTv/zl\nL8ybNw+AnTt3smnTphOSRffu3Rk0aBAAQ4cOZdu2bQ0Wb7BZsnBVzrGwuy+MiTx1tQAaSkpKStXP\nn3zyCf/973/56quvSE5OZvTo0TVOHkxMPNatHRsby9GjRxsk1lCwAW5XXqHXbps1xlRJTU3lyJEj\nNa47dOgQaWlpJCcns2HDBhYtWtTA0TU8a1m4PAUltGtxQvkpY0yUat26NaNGjaJfv340a9aMdu3a\nVa0bN24czz//PAMGDKBXr16MHDkyjJE2DEsWLk+Blz4dWoQ7DGNMBJk1a1aNyxMTE3n33XdrXFc5\nLpGRkcGaNWuqlt97771Bj68hWTcUbt2UwhJa222zxhhTI0sWwOHiMkrL1cYsjDGmFpYs8Cn1YcnC\nGGNqZMmCYxPyrC6UMcbUzJIF1rIwxhh/LFngPHsbrC6UMcbUxpIFxyrOpiVby8IYUz/NmzcHYPfu\n3UycOLHGbUaPHk12dnaN6yo9+eSTFBUVVb2OlJLnliwAT2EJLZvFkxBnvw5jzKnp2LEjc+fOrff+\n1ZNFpJQ8t09H3LpQNl5hjPFx//33H/c8iwcffJCHHnqICy+8kCFDhtC/f3/eeuutE/bbtm0b/fr1\nA+Do0aNMmjSJAQMGcN111x1XG+rWW28lKyuLvn378rvf/Q5wihPu3r2bCy64gAsuuABwSp7n5TlP\nlX7iiSfo168f/fr148knn6w6X+/evfnRj35E3759GTNmTEhqUNkMbpxnWWTYnVDGRK53H4C9q4N7\nzPb9Yfxjta6eNGkS99xzD7fddhsAc+bM4b333uMnP/kJLVq0IC8vj5EjRzJhwoRaC5A+99xzJCcn\ns2rVKlatWsWQIUOq1j3yyCOkp6dTXl7OhRdeyKpVq7jrrrt44oknWLBgARkZGccda+nSpbz88sss\nXrwYVWXEiBGcf/75pKWlNUgpdGtZ4Nw6ay0LY4yvwYMHs3//fnbv3s3KlStJS0ujQ4cO/PKXv2TA\ngAFcdNFF7Nq1i3379tV6jM8++6zqQ3vAgAEMGDCgat2cOXMYMmQIgwcPZu3ataxbt67OeD7//HOu\nuuoqUlJSaN68OVdffTULFy4EGqYUurUscG6dHXlaerjDMMbUpo4WQChNnDiRuXPnsnfvXiZNmsTM\nmTPJzc1l6dKlxMfH061btxpLk/uqqdXx7bff8sc//pElS5aQlpbG1KlT/R5HVWtd1xCl0KO+ZVFW\nXsHBo6U2Ic8Yc4JJkyYxe/Zs5s6dy8SJEzl06BBt27YlPj6eBQsWsH379jr3P++885g5cyYAa9as\nYdWqVQAcPnyYlJQUWrZsyb59+44rSlhbafTzzjuPN998k6KiIgoLC5k3bx7nnntuEK+2blHfssgv\nKkUVqwtljDlB3759OXLkCJ06daJDhw5cf/31XH755WRlZTFo0CDOPPPMOve/9dZbufnmmxkwYACD\nBg1i+PDhAAwcOJDBgwfTt29fTjvtNEaNGlW1z7Rp0xg/fjwdOnRgwYIFVcuHDBnC1KlTq47xwx/+\nkMGDBzfY0/ekrqZNY5KVlaX+7l+uyYa9hxn35EKevX4Il/TvEILIjDH1sX79enr37h3uMJqUmn6n\nIrJUVbP87Rv13VDxsTFc2r8DXVsnhzsUY4yJWFHfDdWjTXOeuX6I/w2NMSaKRX3LwhhjjH+WLIwx\nEaupjKlGglP9XVqyMMZEpKSkJDwejyWMIFBVPB4PSUlJ9T5G1I9ZGGMiU2ZmJjk5OeTm5oY7lCYh\nKSmJzMzMeu9vycIYE5Hi4+Pp3r17uMMwLuuGMsYY45clC2OMMX5ZsjDGGONXkyn3ISK5QN1VveqW\nAeQFKZxIZNfX+DX1a7TrC4+uqtrG30ZNJlmcKhHJDqQ+SmNl19f4NfVrtOuLbNYNZYwxxi9LFsYY\nY/yyZHHM9HAHEGJ2fY1fU79Gu74IZmMWxhhj/LKWhTHGGL+iPlmIyDgR+UZENovIA+GOJxREZJuI\nrBaRFSJy8o8TjDAiMkNE9ovIGp9l6SLyoYhscv9OC2eMp6KW63tQRHa57+EKEbkknDGeChHpLCIL\nRGS9iKwVkbvd5U3pPaztGhvt+xjV3VAiEgtsBC4GcoAlwGRVXRfWwIJMRLYBWaoaifd4nzQROQ8o\nAF5V1X7usseBA6r6mJv001T1/nDGWV+1XN+DQIGq/jGcsQWDiHQAOqjqMhFJBZYCVwJTaTrvYW3X\neC2N9H2M9pbFcGCzqm5VVS8wG7gizDEZP1T1M+BAtcVXAK+4P7+C8x+zUarl+poMVd2jqsvcn48A\n64FONK33sLZrbLSiPVl0Anb6vM6hkb+htVDgAxFZKiLTwh1MiLRT1T3g/EcF2oY5nlC4Q0RWud1U\njbaLxpeIdAMGA4tpou9htWuERvo+RnuykBqWNcV+uVGqOgQYD9zudnOYxuU5oAcwCNgD/Cm84Zw6\nEWkOvAHco6qHwx1PKNRwjY32fYz2ZJEDdPZ5nQnsDlMsIaOqu92/9wPzcLrfmpp9bj9xZX/x/jDH\nE1Squk9Vy1W1AniBRv4eikg8zofoTFX9l7u4Sb2HNV1jY34foz1ZLAF6ikh3EUkAJgFvhzmmoBKR\nFHeADRFJAcYAa+req1F6G7jJ/fkm4K0wxhJ0lR+irqtoxO+hiAjwErBeVZ/wWdVk3sParrExv49R\nfTcUgHvr2pNALDBDVR8Jc0hBJSKn4bQmwHky4qzGfo0i8jowGqeK5z7gd8CbwBygC7ADuEZVG+Ug\ncS3XNxqn60KBbcCPK/v3GxsROQdYCKwGKtzFv8Tp028q72Ft1ziZRvo+Rn2yMMYY41+0d0MZY4wJ\ngCULY4wxflmyMMYY45clC2OMMX5ZsjDGGOOXJQvT6IiIisiffF7f6xbaC8ax/yYiE4NxLD/nucat\nSLog1Oeqdt6pIvJ0Q57TNA2WLExjVAJcLSIZ4Q7El1vFOFA/AG5T1QtCFY8xwWTJwjRGZTiPqPxJ\n9RXVWwYiUuD+PVpEPhWROSKyUUQeE5HrReRr91kfPXwOc5GILHS3u8zdP1ZE/ldElrhF4H7sc9wF\nIjILZwJW9Xgmu8dfIyL/4y77LXAO8LyI/G8N+9znc56H3GXdRGSDiLziLp8rIsnuugtFZLl7nhki\nkuguHyYiX4rISvc6U91TdBSR99znRjzuc31/c+NcLSIn/G5NdIsLdwDG1NMzwKrKD7sADQR645T/\n3gq8qKrD3QfT3Anc427XDTgfp+DbAhE5HbgROKSqw9wP4y9E5AN3++FAP1X91vdkItIR+B9gKJCP\nU/n3SlV9WES+A9yrqtnV9hkD9HSPKcDbbuHHHUAv4Aeq+oWIzABuc7uU/gZcqKobReRV4FYReRb4\nB3Cdqi4RkRbAUfc0g3CqoJYA34jIUzgVXjv5PD+j1Un8Xk0UsJaFaZTcCp6vAnedxG5L3OcMlABb\ngMoP+9U4CaLSHFWtUNVNOEnlTJyaWjeKyAqcshStcT7UAb6unihcw4BPVDVXVcuAmYC/ir9j3D/L\ngWXuuSvPs1NVv3B/fg2nddIL+FZVN7rLX3HP0QvYo6pLwPl9uTEAfKSqh1S1GFgHdHWv8zQReUpE\nxgFNsgqsqT9rWZjG7EmcD9SXfZaV4X4Jcou5JfisK/H5ucLndQXH/1+oXgNHcb7l36mq7/uuEJHR\nQGEt8dVUAt8fAR5V1b9WO0+3OuKq7Ti11fLx/T2UA3Gqmi8iA4GxwO04T3T7/klFbpo0a1mYRsst\nMjcHZ7C40jacbh9wnrwWX49DXyMiMe44xmnAN8D7ON078QAicoZbxbcui4HzRSTDHfyeDHzqZ5/3\nge+L8xwERKSTiFQ+BKiLiJzl/jwZ+BzYAHRzu8oAbnDPsQFnbGKYe5xUEan1y6F7s0CMqr4B/AYY\n4idOE2WsZWEauz8Bd/i8fgF4S0S+Bj6i9m/9dfkG5wO3HXCLqhaLyIs4XVXL3BZLLn4e+6mqe0Tk\nF8ACnG/681W1zrLbqvqBiPQGvnJOQwEwBacFsB64SUT+CmwCnnNjuxn4p5sMlgDPq6pXRK4DnhKR\nZjjjFRfVcepOwMsiUvkF8hd1xWmij1WdNaYRcLuh/lM5AG1MQ7NuKGOMMX5Zy8IYY4xf1rIwxhjj\nlyULY4wxflmyMMYY45clC2OMMX5ZsjDGGOOXJQtjjDF+/X9Pj78ErnlXAAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nKbf/D/1TQ0DBdsBtAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(history.history.keys())\n",
    "# summarize history for accuracy\n",
    "plt.plot(history.history['acc'])\n",
    "plt.plot(history.history['val_acc'])\n",
    "# plt.title('model accuracy')\n",
    "plt.ylabel('Top 20 accuracy')\n",
    "plt.xlabel('Number of epochs')\n",
    "plt.legend(['train', 'validation'], loc='best')\n",
    "foo_fig = plt.gcf() # 'get current figure'\n",
    "foo_fig.savefig('Top 20 accuracy.eps', format='eps', dpi=1000)\n",
    "plt.show()\n",
    "# summarize history for loss\n",
    "plt.plot(history.history['loss'])\n",
    "plt.plot(history.history['val_loss'])\n",
    "# plt.title('model loss')\n",
    "plt.ylabel('loss')\n",
    "plt.xlabel('Number of epochs')\n",
    "plt.legend(['train', 'validation'], loc='best')\n",
    "foo_fig = plt.gcf() # 'get current figure'\n",
    "foo_fig.savefig('model loss.eps', format='eps', dpi=1000)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Precision:0.018425\tRecall:0.3685\tF1:0.035095238095238096\n",
      "[6.5369653968811035, 0.3685]\n",
      "Precision score for classification model -  0.1135\n"
     ]
    }
   ],
   "source": [
    "y_proba = rcnn_model.predict(X_valid, verbose=0)\n",
    "y_pred = y_proba.argmax(axis=1)\n",
    "k = 20\n",
    "y_predTopk = np.argsort(y_proba, axis=1)[:, y_proba.shape[1] - k::]\n",
    "pre = get_precision_score(Y_valid, y_predTopk)\n",
    "recall = get_recall_score(Y_valid, y_predTopk)\n",
    "F1 = 2 * pre * recall / (pre + recall)\n",
    "print('Precision:{0}\\tRecall:{1}\\tF1:{2}'.format(pre, recall, F1))\n",
    "score = rcnn_model.evaluate(X_valid, Y_valid, verbose=0)\n",
    "print(score)\n",
    "# prediction=rcnn_model.predict_classes(X_test)\n",
    "testprecision = precision_score(Y_valid, y_pred, average='micro')\n",
    "print(\"Precision score for classification model - \", testprecision)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.1135"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "accuracy_score(Y_valid, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[840],\n",
       "       [840],\n",
       "       [840],\n",
       "       ..., \n",
       "       [840],\n",
       "       [840],\n",
       "       [840]], dtype=int64)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_predTopk"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2405"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_predTopk.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2405"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_predTopk.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
